//=======================================Copyright(c)===========================================
// 								  深圳易马达科技有限公司
//---------------------------------------文件信息----------------------------------------------
//文件名   	: SocOCVCorr.h
//创建人  	: Handry
//创建日期	:
//描述	    : SOC OCV模块头文件
//-----------------------------------------------当前版本修订----------------------------------
//修改人   	:
//版本	    :
//修改日期	:
//描述	    :
//=============================================================================================
#ifndef _SOCOCVCORR_H
#define _SOCOCVCORR_H

//=============================================================================================
//包含头文件
//=============================================================================================
#include "BSPTypedef.h"

//=============================================================================================
//宏参数设定
//=============================================================================================
#if defined(LFP_HL_25000MAH_16S) || defined(LFP_PH_20000MAH_20S) || defined(LFP_GF_25000MAH_16S)
#define     SOC_OCV_CORR_PERIOD     3               //SOC OCV修正周期

//#define     ENABLE_OCV_CORR_ALLTIME                 //是否需要一直进行OCV修正，需要则定义，否则注释

#define     OCV_CORR_IDLE_TIME             900            //静置启动OCV修正时长，单位 s
#define     OCV_CORR_PEROID_IDLE_TIME      30             //周期静置启动OCV修正时长，单位 s

#elif defined(SY_PB_32000MAH_17S)
#define     SOC_OCV_CORR_PERIOD     3               //SOC OCV修正周期

#define     ENABLE_OCV_CORR_ALLTIME                 //是否需要一直进行OCV修正，需要则定义，否则注释

#define     OCV_CORR_IDLE_TIME             900            //静置启动OCV修正时长，单位 s
#define     OCV_CORR_PEROID_IDLE_TIME      30             //周期静置启动OCV修正时长，单位 s

#elif defined(LFP_TB_20000MAH_20S)
#define     SOC_OCV_CORR_PERIOD     3               //SOC OCV修正周期

//#define     ENABLE_OCV_CORR_ALLTIME                 //是否需要一直进行OCV修正，需要则定义，否则注释

#define     OCV_CORR_IDLE_TIME             900            //静置启动OCV修正时长，单位 s
#define     OCV_CORR_PEROID_IDLE_TIME      30             //周期静置启动OCV修正时长，单位 s

#else
#define     SOC_OCV_CORR_PERIOD     3               //SOC OCV修正周期

#define     ENABLE_OCV_CORR_ALLTIME                 //是否需要一直进行OCV修正，需要则定义，否则注释

#define     OCV_CORR_IDLE_TIME             900            //静置启动OCV修正时长，单位 s
#define     OCV_CORR_PEROID_IDLE_TIME      30             //周期静置启动OCV修正时长，单位 s
#endif

//=============================================================================================
//定义数据类型
//=============================================================================================
typedef struct
{
	u8  crtState;	    //修正状态
	s16  nowTemp;       //当前温度
	s16  avgTemp;       //平均温度
	s16 avgCurr;        //平均电流
	u16 maxVolt;        //最大电压
	u16 minVolt;        //最小电压
    u16 avgVolt;        //平均电压
	float maxOCV;       //最大SOCb改变的ΔSOC/ΔOCV
	float minOCV;       //最小SOCb改变的ΔSOC/ΔOCV
    float avgOCV;       //平均电压下的ΔSOC/ΔOCV
	u8  maxSocb;        //推算最大SOCb
	u8  minSocb;        //推算最小SOCb
    u8  avgSocb;        //推算平均SOCb
    
    u8 IsOcvCorr;       //是否需要OCV修正
    u8 IsOcvCorrPeroid; //是否周期检测OCV表
    u32 OcvStartTim;    //OCV静置起始时间，秒
	u32 OcvInte;        //静置间隔时长，秒 
}t_OCVCrt;              //SOC OCV修正结构体

//=============================================================================================
//声明外部变量
//=============================================================================================


//=============================================================================================
//声明接口函数
//=============================================================================================

//=============================================================================================
//函数名称	: void SocOCVInit(void)
//输入参数	: void
//输出参数	: void
//函数功能	: SOC OCV修正方法模块初始化
//注意事项	: 
//=============================================================================================
void SocOCVInit(void);

//=============================================================================================
//函数名称	: void SocOCVCalcTask(void)
//输入参数	: void
//输出参数	: void
//函数功能	: SOC OCV修正方法任务
//注意事项	: 1s
//=============================================================================================
void SocOCVCalcTask(void);

#endif

/*****************************************end of SocOCVCorr.h*****************************************/
